#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "logindialog.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    _login_dlg = new LoginDialog(this);

    /*
        Qt::FramelessWindowHint（核心）这个标志会移除窗口的边框、标题栏和所有窗口装饰，
        让控件失去 “独立窗口” 的外观和行为（不再有标题栏，无法独立拖动），本质上变成一个 “无框的容器部件”，适合嵌入到父窗口中

        Qt::CustomizeWindowHint这个标志用于允许自定义窗口的标题栏和边框（配合其他标志使用）。
        当与 Qt::FramelessWindowHint 结合时，它会禁用系统默认的窗口装饰规则，确保 “无边框” 效果生效（避免某些平台下的默认样式干扰）。
    */
    _login_dlg->setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);

    this->setCentralWidget(_login_dlg);
    _login_dlg->show();


    connect(_login_dlg,&LoginDialog::switchRegister,this,&MainWindow::SlotSwitchReg);
    connect(_login_dlg,&LoginDialog::switchReset,this,&MainWindow::SlotSwitchReset);


}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::SlotSwitchReg()
{
    _login_dlg->hide();

    _reg_dlg = new RegisterDialog(this);
    _reg_dlg->setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);

    connect(_reg_dlg,&RegisterDialog::sigSwitchLogin,this,&MainWindow::SlotSwitchLogin);

    setCentralWidget(_reg_dlg);
    _reg_dlg->show();
}

void MainWindow::SlotSwitchLogin()
{
    _reg_dlg->hide();
    _login_dlg = new LoginDialog(this);
    //重新连接信号和槽
    //连接登陆界面注册按钮信号
    connect(_login_dlg,&LoginDialog::switchRegister,this,&MainWindow::SlotSwitchReg);
    //连接登陆界面忘记密码按钮信号
    connect(_login_dlg,&LoginDialog::switchReset,this,&MainWindow::SlotSwitchReset);



    _login_dlg->setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);
    setCentralWidget(_login_dlg);
    _login_dlg->show();
}

void MainWindow::SlotSwitchReset()
{
    _login_dlg->hide();
    _reset_dlg = new ResetDialog(this);

    _reset_dlg->setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);
    setCentralWidget(_reset_dlg);
    _reset_dlg->show();

    connect(_reset_dlg,&ResetDialog::switchLogin, this, &MainWindow::SlotSwitchLogin2);

}

void MainWindow::SlotSwitchLogin2()
{
    //隐藏reset password页面并展示login页面，同时进行必要的信号连接
    _reset_dlg->hide();
    _login_dlg = new LoginDialog(this);
    _login_dlg->setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);

    setCentralWidget(_login_dlg);
    _login_dlg->show();

    //连接登陆界面注册按钮信号
    connect(_login_dlg,&LoginDialog::switchRegister,this,&MainWindow::SlotSwitchReg);
    //连接登陆界面忘记密码按钮信号
    connect(_login_dlg,&LoginDialog::switchReset,this,&MainWindow::SlotSwitchReset);

}
